There are several bugs in Icc43b62f:
* When handing the continuation, the code checks for dir=descending when
the actual value is dir=older.
* When the above is fixed, the continuation code assumes "ORDER BY
rc_timestamp DESC, rc_id ASC", which would filesort.
* rc_id is not added to the ORDER BY clause anyway.
Bug: 46787
Change-Id: Ia6ebd4ea0458b8013d4ecb71954dcfbdacff2c00
$timestamp = $this->getDB()->addQuotes( wfTimestamp( TS_MW, $cont[0] ) );
$id = intval( $cont[1] );
- $op = $params['dir'] == 'descending' ? '<' : '>';
+ $op = $params['dir'] === 'older' ? '<' : '>';
$this->addWhere(
"rc_timestamp $op $timestamp OR " .
"(rc_timestamp = $timestamp AND " .
- "rc_id <= $id)"
+ "rc_id $op= $id)"
);
}
+ $order = $params['dir'] === 'older' ? 'DESC' : 'ASC';
+ $this->addOption( 'ORDER BY', array(
+ "rc_timestamp $order",
+ "rc_id $order",
+ ) );
$this->addWhereFld( 'rc_namespace', $params['namespace'] );
$this->addWhereFld( 'rc_deleted', 0 );